package cn.eeepay.framework.service.workOrder;

import cn.eeepay.framework.model.UserLoginInfo;
import cn.eeepay.framework.model.workOrder.WorkFlowNode;

import java.util.List;

/**
 * @author ：quanhz
 * @date ：Created in 2020/4/28 16:23
 */
public interface WorkFlowNodeService {
    /**
     * 新增节点
     * @param workFlowNodes
     * @param userName
     * @param workTypeId
     */
    void saveWorkFlowNode(List<WorkFlowNode> workFlowNodes, String userName,Long workTypeId);

    /**
     * 新增工单的时候保存节点副本
     * @param nodeList
     * @param orderNo
     * @param userLoginInfo
     */
    void saveWorkFlowNode(List<WorkFlowNode> nodeList, String orderNo,UserLoginInfo userLoginInfo);

    /**
     * 根据工单类型获取所有节点
     * @param workTypeId
     * @return
     */
    List<WorkFlowNode> getNodesByWorkTypeID(Long workTypeId);

    /**
     * 根据工单号获取所有节点
     * @param orderNo
     * @return
     */
    List<WorkFlowNode> getNodesByOrderNo(String orderNo);

    /**
     * 获取下一个节点
     * @param currentFlowNo
     * @param orderNo
     * @return
     */
    WorkFlowNode getNodeByParentFlowNo(String currentFlowNo, String orderNo);

    /**
     * 根据节点编号获取节点
     * @param currentFlowNo
     * @param orderNo
     * @return
     */
    WorkFlowNode getNodeByFlowNo(String currentFlowNo, String orderNo);

    /**
     * 批量获取节点
     * @param nodesStr
     * @param orderNo
     * @return
     */
    List<WorkFlowNode> getNodesByFlowNos(String nodesStr, String orderNo);

    /**
     * 跟新节点状态
     * @param orderNo
     * @param flowNo
     * @param status
     */
    void updateStatus(String orderNo,String flowNo,Integer status);

    int update(WorkFlowNode info);

    /**
     * 根据工单编号 部门id获取节点
     * @param orderNo
     * @param deptId
     * @return
     */
    WorkFlowNode getNodeByOrderNoAndDeptNo(String orderNo, Integer deptId);

    /**
     * 根据工单编号获取节点 level倒叙
     * @param orderNo
     * @return
     */
    List<WorkFlowNode> getLockNodesByOrderNo(String orderNo);

    WorkFlowNode getNodeByDeptNoAndOrderNo(Long deptNo, String orderNo);
}
